package com.starry.module.system.core.dict.mapper;

import com.starry.core.common.domain.vo.PageVo;
import com.starry.db.core.mapper.BaseMapperX;
import com.starry.db.core.query.LambdaQueryWrapperX;
import com.starry.module.system.api.dict.domain.qo.SysDictionaryDataPageQo;
import com.starry.module.system.core.dict.entity.SysDictionaryData;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * 系统字典内容-数据库服务层
 *
 * @author xiaoke
 */
@Mapper
public interface SysDictionaryDataMapper extends BaseMapperX<SysDictionaryData> {

    /**
     * 分页查询
     *
     * @param pageQo 分页参数
     * @return PageVo<SysDictionaryData>
     */
    default PageVo<SysDictionaryData> selectPage(SysDictionaryDataPageQo pageQo) {
        return selectPage(pageQo, new LambdaQueryWrapperX<SysDictionaryData>()
                .eqIfPresent(SysDictionaryData::getDictType, pageQo.getDictType())
                .likeIfPresent(SysDictionaryData::getName, pageQo.getName())
                .eqIfPresent(SysDictionaryData::getStatus, pageQo.getStatus())
                .orderByAsc(SysDictionaryData::getDictSort)
        );
    }

    /**
     * 根据字典类型查询字典数据
     *
     * @param dictType 字典类型
     * @return List<SysDictionaryData>
     */
    default List<SysDictionaryData> selectByDictType(String dictType) {
        return selectList(new LambdaQueryWrapperX<SysDictionaryData>()
                .eq(SysDictionaryData::getDictType, dictType)
                .orderByAsc(SysDictionaryData::getDictSort)
        );
    }
}

